home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
(A)G
/
(A)G1.ADF
/
ABasic_games
/
MBrain.c
< prev
next >
Wrap
C/C++ Source or Header
|
1987-02-03
|
61KB
|
1,858 lines
/* ================================================================ */
/* MasterBrain.c */
/* 10.1.88 Ver 1.0 */
/* Thanks to EA for the IFF routines. */
/* The PD Speech routines are from Rob Peck's Speech Demo */
/* Thanks to the anonymous Atari font creators, (fonts ported */
/* to the Amiga. A kludgey hack..... */
/* ================================================================ */
/* (c)Tourmaline Software 10-1-88
Dana McPhee
763 Summer St. #3
Lynn,MA 01905
E-Mail@ IDCMP,(617)769-3172
or Citinet-Boston,(617)439-5699
(TRAMIELHUNTER)
*/
#include "types.h"
#include "memory.h"
#include "intuition.h"
#include "gfx.h"
#include "view.h"
#include "fcntl.h"
#include "stdio.h"
#include "exec.h"
#include "gfx.h"
#include "copper.h"
#include "gels.h"
#include "gfxbase.h"
#include "gfxmacros.h"
#include "clip.h"
#include "rastport.h"
#include "layers.h"
#include "text.h"
#include "collide.h"
#include "custom.h"
#include "dmabits.h"
#include "dos.h"
#include "audio.h"
#include "math.h"
#include "nodes.h"
#include "lists.h"
#include "ports.h"
#include "tasks.h"
#include "io.h"
#include "gads.h"
#include "nodes.h"
#include "lists.h"
#include "memory.h"
#include "interrupts.h"
#include "ports.h"
#include "libraries.h"
#include "io.h"
#include "execbase.h"
#include "narrator.h"
#include "translator.h"
struct MsgPort *readport=0;
struct MsgPort *writeport=0;
extern struct MsgPort *CreatePort();
extern struct IORequest *CreateExtIO();
struct narrator_rb *writeNarrator=0;
struct mouth_rb *readNarrator=0;
struct Library *TranslatorBase=0;
UBYTE *sampleinput;
UBYTE outputstring[500];
SHORT rtnCode;
SHORT readError;
SHORT writeError;
SHORT error;
BYTE audChanMasks[4] = { 3,5,10,12 };
ULONG mex;
#define CANT_OPEN_TRANSLATOR -100
#define CANT_OPEN_NARRATOR -200
#define CREATE_PORT_PROBLEMS -300
#define CREATE_IO_PROBLEMS -400
#define CANT_PERFORM_WRITE -500
#define REVISION 1
extern struct Library *OpenLibrary();
#define blitNode bltnode
#define LFTBW 150
#define TOPBW 60
#define TOPGUESS 62
#define LEFTGUESS 98
#define TOPGAD 119
#define FIRSTEDGE 223
#define SWIDTH 20
#define SHEIGHT 15
#define FLAGYES 0x0008
#define FLAGNO 0x0011
#define mskNone 0
#define mskHasMask 1
#define mskHasTransparentColor 2
#define mskLasso 3
#define cmpNone 0
#define cmpByteRun1 1
#define MakeID(a,b,c,d) ( (a)<<24 | (b)<<16 | (c)<<8 | (d) )
#define FORM MakeID('F','O','R','M')
#define LIST MakeID('L','I','S','T')
#define BODY MakeID('B','O','D','Y')
#define BMHD MakeID('B','M','H','D')
#define CMAP MakeID('C','M','A','P')
#define INTUITION_REV 29
#define GRAPHICS_REV 29
#define UGetByte() (*source++)
#define UPutByte(c) (*dest++ = (c))
struct Gadget gad[17];
struct Gadget *gad_ptr1;
struct Window *Window1;
struct IntuiMessage *mesg;
struct NewWindow NewWindow;
struct Menu Menu1,Menu2;
struct MenuItem *item,*next;
struct IntuiText t0,t1,t2,t3,xt0,xt1,about_t0,about_t1,about_t2,about_t3,about_t4,about_t5,about_t6;
struct GfxBase *GfxBase;
struct ViewPort *vp;
struct Image *Image;
struct Image background;
struct IntuitionBase *IntuitionBase;
struct MenuItem m0,m1,m2,m3,x0,x1;
struct Screen *Screen;
struct guessn {
char number;
int numpos;
} gs[4];
BOOL pal_resp1;
SHORT left,top,picked;
SHORT id,x,y,w,h,d;
USHORT mode,itemnum;
ULONG flags;
ULONG mcode,mclass;
ULONG Seconds,Micros;
UBYTE name2[30];
UBYTE *name;
UBYTE *buffer,*tempbuffer,**psource,**pdest;
UBYTE *filebuffer,*tempfilebuffer,*savebuffer;
UWORD BytePerPlane,TotalBytes,plane,BytePerRow;
int gvoff,hoff,toff,black,white,posse,ic,gad_xpos;
int ret,status,fd,i;
char empty[]="0000";
char pics1[] = "gray_matter";
char answer[] = "0000";
char answer_temp[] = "0000";
char guess[] = "0000";
char guess_temp[]= "0000";
char text1[] = "0123456789";
char wrong[] = "WXYZ";
char wrong2[] = "QRST";
char wrong3[] = "ABCD";
char wrong4[] = "EFGH";
VOID InitMen(),InitMenuItem();
typedef unsigned long ID;
struct Chunk
{
ID ckID ;
long ckSize ;
} ;
struct Chunk chk;
main()
{
get_diskimage(pics1);
}
get_diskimage(pic)
{
typedef UBYTE Masking;
typedef UBYTE Compression;
int numcolors;
USHORT tred,tgreen,tblue;
struct BitMapHeader
{
UWORD w, h;
WORD x, y;
UBYTE nPlanes;
Masking masking;
Compression compression;
UBYTE pad1;
UWORD transparentColor;
UBYTE xAspect, yAspect;
WORD pageWidth, pageHeight;
} ;
struct BitMapHeader bmhd;
struct ColorRegister
{
UBYTE red, green, blue;
};
struct ColorRegister ColorMap[32];
long pos;
fd=open(pic,O_RDONLY);
if(fd==-1)
{
printf("oops...data file 'gray_matter' missing,Sam.\n");
exit(FALSE);
}
status=read(fd,&chk,sizeof(chk));
pos=lseek(fd,4,1);
status=read(fd,&chk,sizeof(chk));
status=read(fd,&bmhd,sizeof(bmhd));
status=read(fd,&chk,sizeof(chk));
status=read(fd,&ColorMap[0],chk.ckSize);
numcolors=chk.ckSize/3;
status=read(fd,&chk,sizeof(chk));
while(chk.ckID!=BODY)
{
pos=lseek(fd,chk.ckSize,1);
status=read(fd,&chk,sizeof(chk));
if(status==NULL)
{
printf("oops...No picture,Sam.\n");
exit(FALSE);
}
}
BytePerRow=(((bmhd.w+15) >> 4) << 1);
BytePerPlane=BytePerRow*bmhd.h;
TotalBytes=BytePerPlane*(UWORD)bmhd.nPlanes;
buffer=(UBYTE *)AllocMem(TotalBytes,MEMF_CHIP);
if(buffer==NULL)
{
printf("no memory for buffer;make some room!\n");
exit(0);
}
filebuffer=(UBYTE *)AllocMem(chk.ckSize,MEMF_CHIP);
if(filebuffer==NULL)
{
printf("Hey, Error! There's not enough ram for the file buffer.\n");
exit(0);
}
savebuffer=buffer;
tempfilebuffer=filebuffer;
status=read(fd,filebuffer,chk.ckSize);
pdest=&tempbuffer;
psource=&tempfilebuffer;
for(i=0;i<bmhd.h;i++)
{
for(plane=0;plane<bmhd.nPlanes;plane++)
{
tempbuffer=buffer+(BytePerRow*i)+(BytePerPlane*plane);
if(bmhd.compression==cmpByteRun1)
{
UnPackBits(psource,pdest,BytePerRow);
}
else
{
GetBits(psource,pdest,BytePerRow);
}
}
}
open_library();
open_screen();
gad[1].NextGadget=&gad[2];
gad[1].LeftEdge=FIRSTEDGE;
gad[1].TopEdge=TOPGAD;
gad[1].Width=SWIDTH;
gad[1].Height=SHEIGHT;
gad[1].Flags=NULL;
gad[1].Activation=GADGIMMEDIATE;
gad[1].GadgetType=BOOLGADGET;
gad[1].GadgetRender=NULL;
gad[1].SelectRender=NULL;
gad[1].GadgetText=NULL;
gad[1].MutualExclude=NULL;
gad[1].SpecialInfo=NULL;
gad[1].GadgetID=01;
gad[1].UserData=NULL;
gad[2].NextGadget=& gad[3];
gad[2].LeftEdge=FIRSTEDGE+21;
gad[2].TopEdge=TOPGAD;
gad[2].Width=SWIDTH;
gad[2].Height=SHEIGHT;
gad[2].Flags=NULL;
gad[2].Activation=GADGIMMEDIATE;
gad[2].GadgetType=BOOLGADGET;
gad[2].GadgetRender=NULL;
gad[2].SelectRender=NULL;
gad[2].GadgetText=NULL;
gad[2].MutualExclude=NULL;
gad[2].SpecialInfo=NULL;
gad[2].GadgetID=02;
gad[2].UserData=NULL;
gad[3].NextGadget=& gad[4];
gad[3].LeftEdge=FIRSTEDGE+42;
gad[3].TopEdge=TOPGAD;
gad[3].Width=SWIDTH;
gad[3].Height=SHEIGHT;
gad[3].Flags=NULL;
gad[3].Activation=GADGIMMEDIATE;
gad[3].GadgetType=BOOLGADGET;
gad[3].GadgetRender=NULL;
gad[3].SelectRender=NULL;
gad[3].GadgetText=NULL;
gad[3].MutualExclude=NULL;
gad[3].SpecialInfo=NULL;
gad[3].GadgetID=03;
gad[3].UserData=NULL;
gad[4].NextGadget=& gad[5];
gad[4].LeftEdge=FIRSTEDGE;
gad[4].TopEdge=TOPGAD+15;
gad[4].Width=SWIDTH;
gad[4].Height=SHEIGHT;
gad[4].Flags=NULL;
gad[4].Activation=GADGIMMEDIATE;
gad[4].GadgetType=BOOLGADGET;
gad[4].GadgetRender=NULL;
gad[4].SelectRender=NULL;
gad[4].GadgetText=NULL;
gad[4].MutualExclude=NULL;
gad[4].SpecialInfo=NULL;
gad[4].GadgetID=04;
gad[4].UserData=NULL;
gad[5].NextGadget=& gad[6];
gad[5].LeftEdge=244;
gad[5].TopEdge=134;
gad[5].Width=SWIDTH;
gad[5].Height=SHEIGHT;
gad[5].Flags=NULL;
gad[5].Activation=GADGIMMEDIATE;
gad[5].GadgetType=BOOLGADGET;
gad[5].GadgetRender=NULL;
gad[5].SelectRender=NULL;
gad[5].GadgetText=NULL;
gad[5].MutualExclude=NULL;
gad[5].SpecialInfo=NULL;
gad[5].GadgetID=05;
gad[5].UserData=NULL;
gad[6].NextGadget=& gad[7];
gad[6].LeftEdge=265;
gad[6].TopEdge=134;
gad[6].Width=SWIDTH;
gad[6].Height=SHEIGHT;
gad[6].Flags=NULL;
gad[6].Activation=GADGIMMEDIATE;
gad[6].GadgetType=BOOLGADGET;
gad[6].GadgetRender=NULL;
gad[6].SelectRender=NULL;
gad[6].GadgetText=NULL;
gad[6].MutualExclude=NULL;
gad[6].SpecialInfo=NULL;
gad[6].GadgetID=06;
gad[6].UserData=NULL;
gad[7].NextGadget=& gad[8];
gad[7].LeftEdge=223;
gad[7].TopEdge=148;
gad[7].Width=SWIDTH;
gad[7].Height=SHEIGHT;
gad[7].Flags=NULL;
gad[7].Activation=GADGIMMEDIATE;
gad[7].GadgetType=BOOLGADGET;
gad[7].GadgetRender=NULL;
gad[7].SelectRender=NULL;
gad[7].GadgetText=NULL;
gad[7].MutualExclude=NULL;
gad[7].SpecialInfo=NULL;
gad[7].GadgetID=07;
gad[7].UserData=NULL;
gad[8].NextGadget=& gad[9];
gad[8].LeftEdge=244;
gad[8].TopEdge=148;
gad[8].Width=SWIDTH;
gad[8].Height=SHEIGHT;
gad[8].Flags=NULL;
gad[8].Activation=GADGIMMEDIATE;
gad[8].GadgetType=BOOLGADGET;
gad[8].GadgetRender=NULL;
gad[8].SelectRender=NULL;
gad[8].GadgetText=NULL;
gad[8].MutualExclude=NULL;
gad[8].SpecialInfo=NULL;
gad[8].GadgetID=08;
gad[8].UserData=NULL;
gad[9].NextGadget=& gad[0];
gad[9].LeftEdge=265;
gad[9].TopEdge=148;
gad[9].Width=SWIDTH;
gad[9].Height=SHEIGHT;
gad[9].Flags=NULL;
gad[9].Activation=GADGIMMEDIATE;
gad[9].GadgetType=BOOLGADGET;
gad[9].GadgetRender=NULL;
gad[9].SelectRender=NULL;
gad[9].GadgetText=NULL;
gad[9].MutualExclude=NULL;
gad[9].SpecialInfo=NULL;
gad[9].GadgetID=09;
gad[9].UserData=NULL;
gad[0].NextGadget=& gad[11];
gad[0].LeftEdge=244;
gad[0].TopEdge=163;
gad[0].Width=SWIDTH;
gad[0].Height=SHEIGHT;
gad[0].Flags=GADGHNONE;
gad[0].Activation=GADGIMMEDIATE;
gad[0].GadgetType=BOOLGADGET;
gad[0].GadgetRender=NULL;
gad[0].SelectRender=NULL;
gad[0].GadgetText=NULL;
gad[0].MutualExclude=NULL;
gad[0].SpecialInfo=NULL;
gad[0].GadgetID=00;
gad[0].UserData=NULL;
gad[11].NextGadget=& gad[12];
gad[11].LeftEdge=215;
gad[11].TopEdge=79;
gad[11].Width=16;
gad[11].Height=8;
gad[11].Flags=GADGIMAGE;
gad[11].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[11].GadgetType=BOOLGADGET;
gad[11].GadgetRender=(APTR)&g11_image;
gad[11].SelectRender=(APTR)&g12_image;
gad[11].GadgetText=NULL;
gad[11].MutualExclude=NULL;
gad[11].SpecialInfo=NULL;
gad[11].GadgetID=11;
gad[11].UserData=NULL;
gad[12].NextGadget=& gad[13];
gad[12].LeftEdge=232;
gad[12].TopEdge=79;
gad[12].Width=18;
gad[12].Height=8;
gad[12].Flags=GADGIMAGE;
gad[12].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[12].GadgetType=BOOLGADGET;
gad[12].GadgetRender=(APTR)&g12_image;
gad[12].SelectRender=(APTR)&g12b_image;
gad[12].GadgetText=NULL;
gad[12].MutualExclude=NULL;
gad[12].SpecialInfo=NULL;
gad[12].GadgetID=12;
gad[12].UserData=NULL;
gad[13].NextGadget=& gad[14];
gad[13].LeftEdge=251;
gad[13].TopEdge=79;
gad[13].Width=18;
gad[13].Height=8;
gad[13].Flags=GADGIMAGE;
gad[13].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[13].GadgetType=BOOLGADGET;
gad[13].GadgetRender=(APTR)&g13_image;
gad[13].SelectRender=(APTR)&g13b_image;
gad[13].GadgetText=NULL;
gad[13].MutualExclude=NULL;
gad[13].SpecialInfo=NULL;
gad[13].GadgetID=13;
gad[13].UserData=NULL;
gad[14].NextGadget=& gad[15];
gad[14].LeftEdge=270;
gad[14].TopEdge=79;
gad[14].Width=18;
gad[14].Height=8;
gad[14].Flags=GADGIMAGE;
gad[14].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[14].GadgetType=BOOLGADGET;
gad[14].GadgetRender=(APTR)&g14_image;
gad[14].SelectRender=(APTR)&g14b_image;
gad[14].GadgetText=NULL;
gad[14].MutualExclude=NULL;
gad[14].SpecialInfo=NULL;
gad[14].GadgetID=14;
gad[14].UserData=NULL;
gad[15].NextGadget=& gad[16];
gad[15].LeftEdge=297;
gad[15].TopEdge=74;
gad[15].Width=13;
gad[15].Height=41;
gad[15].Flags=GADGIMAGE;
gad[15].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[15].GadgetType=BOOLGADGET;
gad[15].GadgetRender=(APTR)&doneb_image;
gad[15].SelectRender=(APTR)&done_image;
gad[15].GadgetText=NULL;
gad[15].MutualExclude=NULL;
gad[15].SpecialInfo=NULL;
gad[15].GadgetID=15;
gad[15].UserData=NULL;
gad[16].NextGadget=NULL;
gad[16].LeftEdge=296;
gad[16].TopEdge=120;
gad[16].Width=15;
gad[16].Height=54;
gad[16].Flags=GADGIMAGE;
gad[16].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
gad[16].GadgetType=BOOLGADGET;
gad[16].GadgetRender=(APTR)&starta_image;
gad[16].SelectRender=(APTR)&startb_image;
gad[16].GadgetText=NULL;
gad[16].MutualExclude=NULL;
gad[16].SpecialInfo=NULL;
gad[16].GadgetID=16;
gad[16].UserData=NULL;
gad_xpos=222;
open_window();
vp=(struct ViewPort *)ViewPortAddress(Window1);
for(i=0;i<numcolors;i++)
{
tred=(ColorMap[i].red);
tgreen=(ColorMap[i].green);
tblue=(ColorMap[i].blue);
tred>>=4;
tgreen>>=4;
tblue>>=4;
SetRGB4(vp,i,tred,tgreen,tblue);
}
background.LeftEdge=0;
background.TopEdge=0;
background.Width=bmhd.w;
background.Height=bmhd.h;
background.Depth=bmhd.nPlanes;
background.ImageData=(SHORT *)buffer;
background.PlanePick=31;
background.PlaneOnOff=0;
background.NextImage=NULL;
Image=&background;
ShowTitle(Screen,FALSE);
DrawImage(Window1->RPort,Image,0,0);
InitMen(&t0,LOWCHECKWIDTH+1,0,"Hide Title");
mex=0x0E;
InitMenuItem(&t0,&m0,&m1,5,0,CHECKIT|CHECKED|MENUTOGGLE,mex);
InitMen(&t1,LOWCHECKWIDTH+1,0,"Show Title");
mex=0x0D;
InitMenuItem(&t1,&m1,&m2,5,10,CHECKIT|MENUTOGGLE);
InitMen(&t2,LOWCHECKWIDTH+1,0,"About");
mex=0x0B;
InitMenuItem(&t2,&m2,&m3,5,20,CHECKIT|MENUTOGGLE,mex);
InitMen(&t3,LOWCHECKWIDTH+1,0,"Quit");
mex=0x07;
InitMenuItem(&t3,&m3,NULL,5,30,CHECKIT|MENUTOGGLE,mex);
Menu1.NextMenu=NULL;
Menu1.LeftEdge=1;
Menu1.TopEdge=1;
Menu1.Width=80;
Menu1.Height=40;
Menu1.Flags=MENUENABLED;
Menu1.MenuName="Options";
Menu1.FirstItem=&m0;
SetMenuStrip(Window1,&Menu1,NULL);
OnGadget(&gad[1],Window1,NULL);
SetDrMd(Window1->RPort,JAM2);
SetAPen(Window1->RPort,18);
SetBPen(Window1->RPort,17);
Move(Window1->RPort,15,80);
Text(Window1->RPort,"Correct",7);
Move(Window1->RPort,13,90);
Text(Window1->RPort,"Answer:",7);
SetAPen(Window1->RPort,19);
SetBPen(Window1->RPort,0);
speechD();
rtnCode=Translate("I am the Amiga.",25,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode=Translate("I am the Master Brain. Welcome to my little Gayme",90,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode=Translate("of logic. You use computers. This should be easy.",90,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode=Translate("ha ha ha ha ha ha ha ha ha ha ha ha ha ha",90,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
ReInit();
GetInput();
}
VOID InitMen(sss,left,top,men2)
struct IntuiText *sss;
UBYTE *men2;
{
sss->FrontPen=5;
sss->BackPen=7;
sss->DrawMode=JAM1;
sss->LeftEdge=left;
sss->TopEdge=top;
sss->ITextFont=NULL;
sss->IText=men2;
sss->NextText=NULL;
}
VOID InitMenuItem(name2,item,next,left,top,flags,mex2)
ULONG mex2;
UBYTE *name2;
USHORT left,top;
ULONG flags;
struct MenuItem *item,*next;
{
item->NextItem=next;
item->LeftEdge=left;
item->TopEdge=top;
item->Width=100;
item->Height=10;
item->Flags=CHECKIT|ITEMTEXT|HIGHCOMP|ITEMENABLED|flags;
item->MutualExclude=mex;
item->ItemFill=(APTR)name2;
item->SelectFill=NULL;
item->Command=NULL;
item->SubItem=NULL;
}
open_screen(title,detailspen,mode,blockpen)
{
struct NewScreen NewScreen;
NewScreen.LeftEdge=0;
NewScreen.TopEdge=0;
NewScreen.Width=320;
NewScreen.Height=200;
NewScreen.Depth=5;
NewScreen.DetailPen=5;
NewScreen.BlockPen=3;
NewScreen.ViewModes=NULL;
NewScreen.Type=CUSTOMSCREEN;
NewScreen.Font=NULL;
NewScreen.DefaultTitle="MasterBrain";
NewScreen.Gadgets=NULL;
NewScreen.CustomBitMap=NULL;
if((Screen=(struct Screen *)OpenScreen(&NewScreen))==NULL)
{
printf("oops...Can't open screen,Sam.\n");
exit(FALSE);
}
}
open_library()
{
IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",INTUITION_REV);
if(IntuitionBase==NULL)
{
printf("oops...Cannot load InutitionBase,Sam. Enough memory?\n");
exit (FALSE);
}
GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",GRAPHICS_REV);
TranslatorBase = OpenLibrary("translator.library",REVISION);
if(TranslatorBase == NULL)
{
printf("oops...Translator.library not in libs directory,Sam.\n");
exit (FALSE);
}
}
open_window()
{
NewWindow.LeftEdge=0;
NewWindow.TopEdge=0;
NewWindow.Width=320;
NewWindow.Height=200;
NewWindow.DetailPen=20;
NewWindow.BlockPen=30;
NewWindow.Title=NULL;
NewWindow.Flags=SMART_REFRESH|WINDOWCLOSE|BORDERLESS|BACKDROP;
NewWindow.IDCMPFlags=MOUSEBUTTONS|GADGETUP|MENUPICK|GADGETDOWN;
NewWindow.Type=CUSTOMSCREEN;
NewWindow.FirstGadget=& gad[1];
NewWindow.CheckMark=NULL;
NewWindow.Screen=Screen;
NewWindow.BitMap=NULL;
NewWindow.MinWidth=0;
NewWindow.MinHeight=0;
NewWindow.MaxHeight=200;
NewWindow.MaxWidth=320;
if((Window1=(struct Window *)OpenWindow(&NewWindow))==NULL)
{
printf("oops...Can't open window,Sam.\n");
exit (FALSE);
}
}
GetBits(psource,pdest,dstBytes0)
BYTE **psource, **pdest; WORD dstBytes0;
{
register BYTE *source= *psource;
register BYTE *dest= *pdest;
register WORD dstBytes= dstBytes0;
while(dstBytes>0)
{
UPutByte(UGetByte());
dstBytes-=1;
}
*psource=source; *pdest=dest;
}
UnPackBits(psource,pdest,dstBytes0)
BYTE **psource, **pdest; WORD dstBytes0;
{
register BYTE *source= *psource;
register BYTE *dest = *pdest;
register BYTE n;
register BYTE c;
register WORD dstBytes = dstBytes0;
WORD minus128= -128;
while(dstBytes > 0)
{
n=UGetByte();
if(n>=0)
{
n+=1;
dstBytes -= n;
do{
UPutByte(UGetByte());
}
while(--n>0);
}
else if(n != minus128)
{
n= -n + 1;
dstBytes -=n;
c=UGetByte();
do{
UPutByte(c);
}
while(--n >0);
}
}
*psource=source; *pdest=dest;
}
GetInput()
{
for(;;)
{
Wait(1<<Window1->UserPort->mp_SigBit);
while((mesg=(struct IntuiMessage *) GetMsg(Window1->UserPort))!=NULL)
{
mclass=mesg->Class;
mcode=mesg->Code;
gad_ptr1=(struct Gadget *)(mesg->IAddress);
picked=gad_ptr1->GadgetID;
ReplyMsg(mesg);
if(mclass == MENUPICK && mcode != MENUNULL)
{
itemnum = ITEMNUM(mcode);
switch(itemnum)
{
case 0:
ShowTitle(Screen, FALSE);
break;
case 1:
ShowTitle(Screen, TRUE);
break;
case 2:
About();
break;
case 3:
CloseThings();
break;
}
}
if(mclass==GADGETDOWN)
{
gad_filter(picked);
}
}
}
}
CloseThings()
{
int fet,ret;
if(writeNarrator != 0)
CloseDevice(writeNarrator);
if(readNarrator != 0)
DeleteExtIO(readNarrator,sizeof(struct mouth_rb));
if(writeNarrator != 0)
DeleteExtIO(writeNarrator,sizeof(struct narrator_rb));
if(readport != 0)
DeletePort(readport);
if(writeport != 0)
DeletePort(writeport);
ClearMenuStrip(Window1);
status=close(fd);
CloseWindow(Window1);
CloseScreen(Screen);
if(TranslatorBase != 0)
CloseLibrary(TranslatorBase);
CloseLibrary(IntuitionBase);
ret=FreeMem(buffer,TotalBytes);
if(ret==0)
{
printf("buffer dealocation failed\n");
}
fet=FreeMem(filebuffer,chk.ckSize);
if(fet==0)
{
printf("filebuffer dealocation failed\n");
}
exit(FALSE);
}
Text_hand()
{
Move(Window1->RPort,gad_xpos,106);
Text(Window1->RPort,&text1[ic],1);
guess[posse]=text1[ic];
}
gad_filter(pick1)
SHORT pick1;
{
switch(pick1)
{
case 0:
ic=0;
Text_hand();
break;
case 1:
ic=1;
Text_hand();
break;
case 2:
ic=2;
Text_hand();
break;
case 3:
ic=3;
Text_hand();
break;
case 4:
ic=4;
Text_hand();
break;
case 5:
ic=5;
Text_hand();
break;
case 6:
ic=6;
Text_hand();
break;
case 7:
ic=7;
Text_hand();
break;
case 8:
ic=8;
Text_hand();
break;
case 9:
ic=9;
Text_hand();
break;
case 11:
gad_xpos=221;
posse=0;
RemoveGadget(Window1,& gad[11]);
RemoveGadget(Window1,& gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[11].Flags |= SELECTED;
gad[12].Flags &= ~SELECTED;
gad[13].Flags &= ~SELECTED;
gad[14].Flags &= ~SELECTED;
gad[15].Flags &= ~SELECTED;
WaitTOF();
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
RefreshGadgets(&gad[1],Window1);
break;
case 12:
gad_xpos=237;
posse=1;
RemoveGadget(Window1,&gad[11]);
RemoveGadget(Window1,&gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[12].Flags |= SELECTED;
gad[11].Flags &= ~SELECTED;
gad[13].Flags &= ~SELECTED;
gad[14].Flags &= ~SELECTED;
gad[15].Flags &= ~SELECTED;
WaitTOF();
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
RefreshGadgets(&gad[1],Window1);
break;
case 13:
gad_xpos=256;
posse=2;
RemoveGadget(Window1,&gad[11]);
RemoveGadget(Window1,&gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[13].Flags |= SELECTED;
gad[11].Flags &= ~SELECTED;
gad[12].Flags &= ~SELECTED;
gad[14].Flags &= ~SELECTED;
gad[15].Flags &= ~SELECTED;
WaitTOF();
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
RefreshGadgets(&gad[1],Window1);
break;
case 14:
gad_xpos=274;
posse=3;
RemoveGadget(Window1,&gad[11]);
RemoveGadget(Window1,&gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[14].Flags |= SELECTED;
gad[12].Flags &= ~SELECTED;
gad[13].Flags &= ~SELECTED;
gad[11].Flags &= ~SELECTED;
gad[15].Flags &= ~SELECTED;
WaitTOF();
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
RefreshGadgets(&gad[1],Window1);
break;
case 15:
RemoveGadget(Window1,&gad[11]);
RemoveGadget(Window1,&gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[15].Flags |= SELECTED;
gad[11].Flags &= ~SELECTED;
gad[12].Flags &= ~SELECTED;
gad[13].Flags &= ~SELECTED;
gad[14].Flags &= ~SELECTED;
WaitTOF();
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
RefreshGadgets(&gad[1],Window1);
gvoff++;
if(gvoff>8)
gvoff=1;
Move(Window1->RPort,LEFTGUESS,TOPGUESS+12*gvoff);
Text(Window1->RPort,&guess[0],4);
CompareB();
CompareW();
PrintBW();
break;
case 16:
RemoveGadget(Window1,&gad[16]);
RemoveGadget(Window1,&gad[11]);
RemoveGadget(Window1,&gad[12]);
RemoveGadget(Window1,&gad[13]);
RemoveGadget(Window1,&gad[14]);
RemoveGadget(Window1,&gad[15]);
gad[16].Flags |= SELECTED;
gad[11].Flags &= ~SELECTED;
gad[12].Flags &= ~SELECTED;
gad[13].Flags &= ~SELECTED;
gad[14].Flags &= ~SELECTED;
gad[15].Flags &= ~SELECTED;
AddGadget(Window1,&gad[1]);
AddGadget(Window1,&gad[2]);
AddGadget(Window1,&gad[3]);
AddGadget(Window1,&gad[4]);
AddGadget(Window1,&gad[5]);
AddGadget(Window1,&gad[6]);
AddGadget(Window1,&gad[7]);
AddGadget(Window1,&gad[8]);
AddGadget(Window1,&gad[9]);
AddGadget(Window1,&gad[0]);
AddGadget(Window1,&gad[11]);
AddGadget(Window1,&gad[12]);
AddGadget(Window1,&gad[13]);
AddGadget(Window1,&gad[14]);
AddGadget(Window1,&gad[15]);
AddGadget(Window1,&gad[16]);
RefreshGadgets(&gad[1],Window1);
ReInit();
}
}
CompareB()
{
int dd,ee;
for(ee=0;ee<4;ee++)
{
guess_temp[ee]=guess[ee];
}
ee=0;
for(ee=0;ee<4;ee++)
{
answer_temp[ee]=answer[ee];
}
for(dd=0;dd<4;dd++)
{
if(guess_temp[dd]==answer_temp[dd])
{
black++;
answer_temp[dd]=wrong[dd];
guess_temp[dd]=wrong2[dd];
}
}
}
CompareW()
{
int count,iq,ee;
for(ee=0;ee<4;ee++){
gs[ee].number=guess_temp[ee];
gs[ee].numpos=ee;
}
for(count=0;count<4;count++)
{
iq=0;
for(iq=0;iq<4;iq++)
{
if(gs[count].number==answer_temp[iq]&&gs[count].numpos!=iq)
{
gs[count].number=wrong3[count];
answer_temp[iq]=wrong4[count];
white++;
}
}
}
}
GetAnswer()
{
int s,e;
for(s=0;s<4;s++)
{
e=rand()%9;
answer[s]=text1[e];
}
}
PrintBW()
{
int f;
f=0;
for(f=0;f<black;f++)
{
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,LFTBW+8*hoff,TOPBW+8+toff,LFTBW+5+8*hoff,TOPBW+6+8+toff);
hoff++;
}
f=0;
SetAPen(Window1->RPort,1);
for(f=0;f<white;f++)
{
RectFill(Window1->RPort,LFTBW+8*hoff,TOPBW+8+toff,LFTBW+5+8*hoff,TOPBW+6+8+toff);
hoff++;
}
if(toff!=84)
{
toff=toff+12;
}
else
{
if(black!=4)
{
toff=0;
PrintAns();
SayLose();
ShutOffGads();
}
}
if(black==4)
{
toff=0;
PrintAns();
SayWin();
ShutOffGads();
}
black=0;
white=0;
SetAPen(Window1->RPort,19);
hoff=0;
}
speechD()
{
writeport = CreatePort(0,0);
if(writeport == NULL)
{
error=CREATE_PORT_PROBLEMS;
exit(FALSE);
}
readport = CreatePort(0,0);
if(readport == NULL) {
error=CREATE_PORT_PROBLEMS;
exit(FALSE);
}
writeNarrator = (struct narrator_rb *)CreateExtIO(writeport,sizeof(struct narrator_rb));
if(writeNarrator == NULL)
{
error=CREATE_IO_PROBLEMS;
exit(FALSE);
}
readNarrator=(struct mouth_rb *)CreateExtIO(readport,sizeof(struct mouth_rb));
if(readNarrator == NULL)
{
error=CREATE_IO_PROBLEMS;
exit(FALSE);
}
writeNarrator->ch_masks = (audChanMasks);
writeNarrator->nm_masks = sizeof(audChanMasks);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
writeNarrator->mouths = 1;
writeNarrator->message.io_Command = CMD_WRITE;
error=OpenDevice("narrator.device",0,writeNarrator,0);
if(error != 0)
{
printf("oops...Narrator device not in devs directory,Sam.\n");
exit(FALSE);
}
readNarrator->voice.message.io_Device=writeNarrator->message.io_Device;
readNarrator->voice.message.io_Unit=writeNarrator->message.io_Unit;
readNarrator->width=0;
readNarrator->height=0;
readNarrator->voice.message.io_Command=CMD_READ;
readNarrator->voice.message.io_Error=0;
writeError = SendIO(writeNarrator);
if(writeError!=NULL)
{
error=CANT_PERFORM_WRITE;
exit(FALSE);
}
while((readError=readNarrator->voice.message.io_Error)!=ND_NoWrite)
{
DoIO(readNarrator);
DrawMouth(readNarrator->width,readNarrator->height);
}
}
DrawMouth(w,h)
SHORT w,h;
{
return(0);
}
int strlen(string)
char *string;
{
int i,length;
length = -1;
for(i=0; i<256; i++)
{
if(*string++=='\0')
{
length = i+1;
break;
};
}
return(length);
}
struct IORequest *CreateExtIO(ioReplyPort,size)
struct MsgPort *ioReplyPort;
LONG size;
{
struct IORequest *ioReq;
if(ioReplyPort == 0)
return ((struct IORequest *)0);
ioReq = (struct IORequest *)AllocMem(size, MEMF_CLEAR | MEMF_PUBLIC);
if(ioReq == 0)
return ((struct IORequest *)0);
ioReq -> io_Message.mn_Node.ln_Type = NT_MESSAGE;
ioReq -> io_Message.mn_Node.ln_Pri = 0;
ioReq -> io_Message.mn_ReplyPort = ioReplyPort;
ioReq -> io_Message.mn_Length = (size - sizeof(struct Message));
return (ioReq);
}
DeleteExtIO(ioExt,size)
struct IORequest *ioExt;
LONG size;
{
ioExt -> io_Message.mn_Node.ln_Type = 0xff;
ioExt -> io_Device = (struct Device *) -1;
ioExt -> io_Unit = (struct Unit *) -1;
FreeMem (ioExt, size);
}
SayLose()
{
int rsay;
CurrentTime(&Seconds,&Micros);
srand(Micros);
rsay=rand()%50;
rtnCode = Translate("The envelope please. Sorry. The correct number was",95,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode = Translate(&answer[0],4,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
switch(rsay)
{
case 1:
rtnCode=Translate("Better luck next time Doe bee.",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 2:
rtnCode=Translate("Your answer is as logical as a pickpocket in a nudist colony.",137,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 3:
rtnCode = Translate("Larry Bud Melmin would be a good match for you.",50,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 4:
rtnCode=Translate("u lose. Youl never make Stupid Human tricks on Letterman at this rate.",150,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 5:
rtnCode = Translate("hay,thats o k,we are all boe zoes on this bus.",94,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 6:
rtnCode = Translate("Your a victim of",30,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode = Translate("soycumstance.",30,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
writeNarrator->pitch = MAXPITCH;
DoIO(writeNarrator);
writeNarrator->pitch = DEFPITCH;
break;
case 7:
rtnCode = Translate("Yuck. Yuck. Gag me with a spoon.",69,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 8:
rtnCode = Translate("Sorry about that chief. Give it up!",96,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 9:
rtnCode=Translate("Well, well. You thought this was easy. huh?",50,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 10:
rtnCode=Translate("No way ho zay. You struck out. Youve benn zapped. Smoked. Dusted. Blown away. Dun in.",134,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 11:
rtnCode = Translate("Excuze me. You, yes you. Looking at my screen.",85,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode=Translate("Are you sure you are paying attention?",75,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 12:
rtnCode=Translate("Hay u,would John Wayne lose at this game? Never.",87,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 13:
rtnCode=Translate("good sir. This one of thoze slings, And Airows of",92,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
rtnCode=Translate("outrajeeus fortune that Bill shake spear warned u about",102,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 14:
rtnCode=Translate("Its not wether you win or lose,its how well u cheet",102,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 15:
rtnCode=Translate("You lose. Be sure and be a good sport about it.",82,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 16:
rtnCode=Translate("Not this time, doabee. You learn from your mistakes.",92,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 17:
rtnCode=Translate("Well, just think,you have plenty in cawmon with the baltimore orioles.",130,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 18:
rtnCode=Translate("Humm. Do The words bom out come to mind.",92,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 19:
rtnCode=Translate("To get the Hint book on the answer, send all your money to Infoa Com. They have most of it anyway.",162,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 20:
rtnCode=Translate("You lost. Go to your room. Do not pass Go,Do not collect 2 hundred dollars",145,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 21:
rtnCode=Translate("Sorry about that chief, you flunked.",90,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 22:
rtnCode=Translate("U Dropped the ball on this one, doabee. No gaytoraid for you.",250,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 23:
rtnCode=Translate("Your brain has turned to a mass of jello.",50,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 24:
rtnCode=Translate("By any chance, Do you have two brothers named Daril?",150,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 25:
rtnCode=Translate("A wise man once said. If at first u doant succeed, forget it, and go watch bullwinkle cartoons.",200,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 26:
rtnCode=Translate("My advice is . Keep your day job.",50,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 27:
rtnCode=Translate("When one has lost, it is good to remember. It is better to light one candle than to stub your toa.",250,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 28:
rtnCode=Translate("You are the Bob uKer of logic games.",70,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 29:
rtnCode=Translate("You forgot to burn your Atari S T as a sacrificial offering to the gods of logic this morning.",250,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 30:
rtnCode=Translate("You are now condemned to work for I B M for the rest of your natural life. After that, your on your own.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 31:
rtnCode=Translate("I forgot to mention. Because you lost, you are now my indentured servant.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 32:
rtnCode=Translate("I would play taps for you but Jack Tramiel sat on my trumpet.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 33:
rtnCode=Translate("Well, at least you could go on Donahue and give your story. If you won u could have gone on Oapra",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 34:
rtnCode=Translate("I'll take the tyetil to your house,now please.",85,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 35:
rtnCode=Translate("If u lose again u will have to listen to my phoanee voice for seven days strait.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 36:
rtnCode=Translate("Hey, Burger king is looking for help.",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 37:
rtnCode=Translate("I am the gordon gecko of games. Winning is good. Greed is good. ben and jerries ice cream is good.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 38:
rtnCode=Translate("Got u on a called third strike. Yoa.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 39:
rtnCode=Translate("Rivenge is mine.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 40:
rtnCode=Translate("There u go. All intelligence is artificial.",85,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 41:
rtnCode=Translate("take 2 asperin and doant call me.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 42:
rtnCode=Translate("ha ha ha ha ha ha ha ha ha ha ha ha ha ha. Enuff said.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 43:
rtnCode=Translate("as W C said, never give a sucker an even break.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 44:
rtnCode=Translate("All in all eyed rather be in filidelfia.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 45:
rtnCode=Translate("go back to bayker street, sherlock.",85,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 46:
rtnCode=Translate("do u no that u use fewer facial mussles when u win than wen u lose",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 47:
rtnCode=Translate("say it over and over. losing can be fun. losing can be fun. Losing can be fun.",255,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 48:
rtnCode=Translate("i would say better luck next time but u probably wont help.",175,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 49:
rtnCode=Translate("guess what. a simple number game just beat you out.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
case 50:
rtnCode=Translate("go wash the dog.",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
break;
}
}
SayWin()
{
int rsay2;
CurrentTime(&Seconds,&Micros);
rtnCode=Translate("We have a winner.",45,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
srand(Micros);
rsay2=rand()%30;
switch(rsay2)
{
case 0:
rtnCode=Translate("You guessed it by gum. You got four big ones.",68,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 1:
rtnCode=Translate("You Win,Cisco. Your mother would be proud. ",83,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 2:
rtnCode=Translate("mister Spock would be exceedingly proud of your logic",75,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 3:
rtnCode = Translate("Nice Going,ACE. Wheel let u out of jail now.",85,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 4:
rtnCode=Translate("as Fill Rizzutoe would say. HOELEY KAOW",65,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 5:
rtnCode=Translate("not bad. And you own an Amiga ,too. Chalk up 2 for u",99,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 6:
rtnCode=Translate("hay Ace. Good thinking. Or was it dum luck?",65,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 7:
rtnCode=Translate("ok you won. Go ahead and stroke your eego.",73,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 8:
rtnCode=Translate("So u won,big deal. What do u want, a B M W?",76,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 9:
rtnCode=Translate("All right, mick gilicutty, you did it.",62,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 10:
rtnCode=Translate("your logic is impecable professor",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 11:
rtnCode=Translate("You won. Hay. So This izzint Rocket Ranger. But as Letterman says,what did you pay for it?",145,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 12:
rtnCode=Translate("You made it. You are now in the masterbrain hall of fame",75,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 13:
rtnCode=Translate("You won. The gipper would be proud, by jorge",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 14:
rtnCode=Translate("Your a winner, and I hear the fat lady singing.",210,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 15:
rtnCode=Translate("You win. You are now an official Masterbrain apprentis.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 16:
rtnCode=Translate("Woa nelly. You have won the Masterbrain M V P award.",175,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 17:
rtnCode=Translate("You did it,chief.Now on to the masterbrain world series.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 18:
rtnCode=Translate("Excellent choice. You get 60 brownee points.",95,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 19:
rtnCode=Translate("I can't beleeve your brainpower. o o pinch me.",190,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 20:
rtnCode=Translate("Strike up the band.",55,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 21:
rtnCode=Translate("You win. For now. We are going to test you for steroids.",175,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 22:
rtnCode=Translate("You beat me. This buds for u.",145,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 23:
rtnCode=Translate("All right! Amiga. Computer of champeeons.",95,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 24:
rtnCode=Translate("Jay Miner dreamed of the day you wood win this game. Hurray!.",155,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 25:
rtnCode=Translate("The Master Brain has been zapped by his lowly apprentis.",145,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 26:
rtnCode=Translate("You have an excellent brain. say. Do u have any hot tips for the bond market?",165,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 27:
rtnCode=Translate("You won, but I cant play your national anthem. I am a louwsee singer.",175,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 28:
rtnCode=Translate("Outstanding. This is better than M T V, esint it.",145,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 29:
rtnCode=Translate("And before you ask, no, we doant have an audeeo daily double, nore is Vanna here.",175,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
case 30:
rtnCode=Translate("Congradulations. Ed mac man will be at your house tummorrow with the check.",195,outputstring,500);
writeNarrator->message.io_Data = (APTR)outputstring;
writeNarrator->message.io_Length = strlen(outputstring);
DoIO(writeNarrator);
break;
}
}
ReInit()
{
int ttoff,btoff,z;
toff=0;
ttoff=67;
btoff=75;
gvoff=0;
CurrentTime(&Seconds,&Micros);
srand(Micros);
GetAnswer();
rtnCode = Translate("O k,click on each number,,good luck.",37,outputstring,500);
writeNarrator->message.io_Data=(APTR)outputstring;
writeNarrator->message.io_Length=strlen(outputstring);
DoIO(writeNarrator);
for(z=0;z<8;z++)
{
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,92,ttoff,136,btoff);
SetAPen(Window1->RPort,23);
RectFill(Window1->RPort,141,ttoff,188,btoff);
ttoff=ttoff+12;
btoff=btoff+12;
if(ttoff==163)
ttoff=67;
if(ttoff==171)
btoff=75;
}
z=0;
for(z=0;z<8;z++)
{
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,219,98,231,111);
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,235,98,249,111);
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,253,98,267,111);
SetAPen(Window1->RPort,0);
RectFill(Window1->RPort,271,98,285,111);
}
SetAPen(Window1->RPort,3);
RectFill(Window1->RPort,26,108,65,118);
strcpy(&guess,&empty);
strcpy(&guess_temp,&empty);
SetAPen(Window1->RPort,19);
RefreshGadgets(&gad[1],Window1);
}
PrintAns()
{
SetBPen(Window1->RPort,3);
SetAPen(Window1->RPort,0);
Move(Window1->RPort,29,116);
Text(Window1->RPort,&answer[0],4);
SetAPen(Window1->RPort,19);
SetBPen(Window1->RPort,0);
SetAPen(Window1->RPort,19);
}
ShutOffGads()
{
int gadi;
for(gadi=0;gadi<15;gadi++)
{
RemoveGadget(Window1,&gad[0+gadi]);
}
}
TurnOnGads()
{
int gadi;
for(gadi=0;gadi<15;gadi++)
{
AddGadget(Window1,&gad[0+gadi]);
}
}
About()
{
about_t0.FrontPen=0;
about_t0.BackPen=11;
about_t0.DrawMode=JAM1;
about_t0.LeftEdge=15;
about_t0.TopEdge=10;
about_t0.ITextFont=NULL;
about_t0.IText=(UBYTE *)"(Freely distributable)";
about_t0.NextText=&about_t4;
about_t4.FrontPen=18;
about_t4.BackPen=11;
about_t4.DrawMode=JAM1;
about_t4.LeftEdge=15;
about_t4.TopEdge=20;
about_t4.ITextFont=NULL;
about_t4.IText=(UBYTE *)"Tourmaline Software";
about_t4.NextText=&about_t5;
about_t5.FrontPen=18;
about_t5.BackPen=15;
about_t5.DrawMode=JAM1;
about_t5.LeftEdge=15;
about_t5.TopEdge=30;
about_t5.ITextFont=NULL;
about_t5.IText=(UBYTE *)"Dana McPhee";
about_t5.NextText=&about_t6;
about_t6.FrontPen=0;
about_t6.BackPen=15;
about_t6.DrawMode=JAM1;
about_t6.LeftEdge=15;
about_t6.TopEdge=40;
about_t6.ITextFont=NULL;
about_t6.IText=(UBYTE *)"Email to IDCMP (617)769-3172";
about_t6.NextText=NULL;
about_t1.FrontPen=0;
about_t1.BackPen=15;
about_t1.DrawMode=JAM1;
about_t1.LeftEdge=6;
about_t1.TopEdge=3;
about_t1.ITextFont=NULL;
about_t1.IText=(UBYTE *)"Ying";
about_t1.NextText=NULL;
about_t2.FrontPen=0;
about_t2.BackPen=15;
about_t2.DrawMode=JAM1;
about_t2.LeftEdge=6;
about_t2.TopEdge=3;
about_t2.ITextFont=NULL;
about_t2.IText=(UBYTE *)"Yang";
about_t2.NextText=NULL;
pal_resp1=AutoRequest(Window1,about_t0,about_t1,about_t2,FLAGYES,FLAGNO,300,85);
return;
}